package com.qf.openapi.web.master.service;

import com.qf.openapi.web.master.entity.User;
import com.qf.openapi.web.master.vo.ResultVo;
import com.qf.openapi.web.master.vo.TableVo;
import com.qf.openapi.web.master.vo.UserVo;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.text.ParseException;
import java.util.List;

public interface UserSevice {

    public User getUser(Integer id);

    /**
     * 检验用户名和密码是否正确 ，如果正确，返回user对象 ，如果错误，返回null
     * @param username
     * @param password
     * @return
     */
    User login(String username, String password);

    /**
     * 用户注册方法
     * @param userVo 包含了上传的文件
     * @param realPath 头像文件存放的物理路径
     * @return
     */
    ResultVo regist(UserVo userVo, String realPath) throws IOException;

    /**
     * 检查用户名是否存在
     * @param username
     * @return
     */
    ResultVo checkUsername(String username);

    /**
     * 分页查询用户数据
     * @param page     页号
     * @param limit    页大小
     * @return
     */
    TableVo getAllUserByPage(Integer page, Integer limit);

    /**
     * 拦截中使用的还原用户登录状态的方法
     * @param username
     * @param md5password
     * @return
     */
    User restoreUser(String username, String md5password);

    /**
     * 使用分页插件
     * @param page
     * @param limit
     * @return
     */
    TableVo getUserByPagehelper(Integer page, Integer limit);

    /**
     * 添加用户
     * @param user
     * @return
     */
    ResultVo addUser(User user);

    /**
     * 根据id删除用户
     * @param ids
     * @return
     */
    ResultVo deleteUserByIds(List<Integer> ids);

    /**
     * 修改用户
     * @param user
     * @return
     */
    ResultVo updateUser(User user);

    /**
     * 带有条件的分页查询
     * @param page
     * @param limit
     * @param userVo
     * @return
     */
    TableVo<User> getUsersByContdition(Integer page, Integer limit, UserVo userVo);

	String export( ) throws IllegalAccessException, ClassNotFoundException;

    TableVo< User> insert( MultipartFile source ) throws IOException, IllegalAccessException, InstantiationException, ClassNotFoundException, ParseException;
}
